; 系统调用入口
; eax 中存放系统调用号

extern g_SyscallTable
global DispatchSyscall
; 在栈上依次存放 6 个参数
DispatchSyscall: dd SyscallEntrypoint
SyscallEntrypoint:
    push ds
    push ebp
    push edi
    push esi
    push edx
    push ecx
    push ebx
    mov ebx, 2 << 3
    mov ds, ebx
    call [g_SyscallTable + eax * 4]
    pop ebx
    pop ecx
    pop edx
    pop esi
    pop edi
    pop ebp
    pop ds
    iret ; 返回时 eax 中存放返回值